/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ds.vetxsoft.converter;


import edu.ds.vetxsoft.bean.ClienteBean;
import edu.ds.vetxsoft.entity.Ciudad;
import edu.ds.vetxsoft.system.ISystemControl;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 *
 * @author Antonio
 */
@FacesConverter(forClass = Ciudad.class, value = "CiudadConverter")
public class CiudadConverter implements Converter {


    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
        if (value == null || value.trim().length() == 0) {
            return null;
        }
        try {
            ISystemControl ruatSystem = ((ClienteBean) fc.getApplication().getELResolver().getValue(fc.getELContext(), null, "clienteBean")).getSystemControl();
            Ciudad ciudad = ruatSystem.findCiudad(value);
            return ciudad;
        } catch (Exception _exc) {
            fc.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, _exc.getClass().getName(), _exc.getMessage()));
            return null;
        }
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object value) {
        if (value == null) {
            return null;
        }
        if (value instanceof Ciudad) {
            Ciudad ciudad = (Ciudad) value;
            return ciudad.getCodigo();
        } else {
            throw new IllegalArgumentException("object " + value + " is of type " + value.getClass().getName() + "; expected type: " + Ciudad.class.getName());
        }
    }
}
